////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2017-2018 Qualcomm Technologies, Inc.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// THIS IS AUTO-GENERATED CODE.  PLEASE DO NOT EDIT (File bug reports against tools).
///
/// Auto-generated by: ParameterParser V1.1.4
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  hdr_2_2_0.h
/// @brief Auto-generated Chromatix parameter file
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef HDR_2_2_0_H
#define HDR_2_2_0_H

#include "parametermodule.h"
#include "parameterfilesymboltable.h"
#include "parametertypes.h"
#include "ispglobalelements.h"

#define HDR_2_2_0_NAMESPACE_BEGIN namespace hdr_2_2_0 {
#define HDR_2_2_0_NAMESPACE_END }

HDR_2_2_0_NAMESPACE_BEGIN

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// hdr22_rgn_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct hdr22_rgn_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// recon_min_factor
    ///
    /// Tuning Level:  must_tune
    /// Description:   This value represents min to mid factor to force vertical edge direction
    /// Default Value: 12
    /// Range:         [0, 31]
    /// Bit Depth:     5u
    /// Conversion:    No Conversion needed
    /// Notes:         range: 0-16 is meaningful
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT recon_min_factor;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// recon_flat_region_th
    ///
    /// Tuning Level:  must_tune
    /// Description:   This value represents the threshold for the flat region in edge detection
    /// Default Value: 64
    /// Range:         [0, 1023]
    /// Bit Depth:     10u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT recon_flat_region_th;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// recon_h_edge_th1
    ///
    /// Tuning Level:  must_tune
    /// Description:   This value represents threshold 1 for the horizontal edge switching function
    /// Default Value: 16
    /// Range:         [0, 1023]
    /// Bit Depth:     10u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT recon_h_edge_th1;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// recon_h_edge_dth_log2
    ///
    /// Tuning Level:  must_tune
    /// Description:   log2(th2-th1) for horizontal edge switching function.
    /// Default Value: 4
    /// Range:         [4,7]
    /// Bit Depth:     4u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT recon_h_edge_dth_log2;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// recon_motion_th1
    ///
    /// Tuning Level:  must_tune
    /// Description:   This value represents threshold 1 for the motion switching function.
    /// Default Value: 184
    /// Range:         [0, 1023]
    /// Bit Depth:     10u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT recon_motion_th1;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// recon_motion_dth_log2
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Brief description: log2(th2-th1) for motion switching function.
    /// Default Value: 4
    /// Range:         [4,7]
    /// Bit Depth:     4u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT recon_motion_dth_log2;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// recon_dark_th1
    ///
    /// Tuning Level:  must_tune
    /// Description:   This value represents threshold 1 for dark noise switching function.
    /// Default Value: 0
    /// Range:         [0, 1023]
    /// Bit Depth:     10u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT recon_dark_th1;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// recon_dark_dth_log2
    ///
    /// Tuning Level:  must_tune
    /// Description:   Brief description: log2(th2-th1) for dark noise switching function.
    /// Default Value: 4
    /// Range:         [0,4]
    /// Bit Depth:     4u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT recon_dark_dth_log2;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_zrec_prefilt_tap0
    ///
    /// Tuning Level:  must_tune
    /// Description:   This value represents the strength of the Zigzag HDR prefilter.
    /// Default Value: 0
    /// Range:         [0,63]
    /// Bit Depth:     6u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT hdr_zrec_prefilt_tap0;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_zrec_g_grad_th1
    ///
    /// Tuning Level:  must_tune
    /// Description:   This value represents threshold 1 for the green pixel gradient for directional interpolation.
    /// Default Value: 32
    /// Range:         [0,4095]
    /// Bit Depth:     12u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT hdr_zrec_g_grad_th1;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_zrec_rb_grad_th1
    ///
    /// Tuning Level:  must_tune
    /// Description:   This value represents threshold 1 for the red/blue pixel gradient for directional interpolation.
    /// Default Value: 32
    /// Range:         [0,4095]
    /// Bit Depth:     12u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT hdr_zrec_rb_grad_th1;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mac_motion0_th1
    ///
    /// Tuning Level:  must_tune
    /// Description:   Noise model is: noise = th2*sqrt(gain*intensity)+th1.
    /// Default Value: 60
    /// Range:         [0,1023]
    /// Bit Depth:     10u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT mac_motion0_th1;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mac_motion0_th2
    ///
    /// Tuning Level:  must_tune
    /// Description:   Noise model is: noise = th2*sqrt(gain*intensity)+th1. This value represents the noise-luma slope for
    ///                motion detection.
    /// Default Value: 24
    /// Range:         [0,255]
    /// Bit Depth:     8u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT mac_motion0_th2;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mac_motion0_strength
    ///
    /// Tuning Level:  must_tune
    /// Description:   This value represents the motion adaptation strength value.
    /// Default Value: 8
    /// Range:         [0,16]
    /// Bit Depth:     5u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT mac_motion0_strength;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mac_low_light_th1
    ///
    /// Tuning Level:  must_tune
    /// Description:   This value represents the threshold 1 value for low light switching.
    /// Default Value: 0
    /// Range:         [0,16383]
    /// Bit Depth:     14u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT mac_low_light_th1;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mac_low_light_strength
    ///
    /// Tuning Level:  must_tune
    /// Description:   This value represents the log light switching strength value.
    /// Default Value: 0
    /// Range:         [0,16]
    /// Bit Depth:     5u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT mac_low_light_strength;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mac_high_light_th1
    ///
    /// Tuning Level:  must_tune
    /// Description:   This value represents the threshold 1 value for high light switching.
    /// Default Value: 232
    /// Range:         [0,16383]
    /// Bit Depth:     14u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT mac_high_light_th1;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mac_high_light_dth_log2
    ///
    /// Tuning Level:  must_tune
    /// Description:   This value represents the log2(th2 ?th1) value for high light switching.
    /// Default Value: 10
    /// Range:         [2, 14]
    /// Bit Depth:     4u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT mac_high_light_dth_log2;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_hdr22_aec_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_hdr22_aec_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// aec_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    globalelements::trigger_pt_type_aec aec_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr22_rgn_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    hdr22_rgn_dataType  hdr22_rgn_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_hdr22_hdr_aec_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_hdr22_hdr_aec_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_aec_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ispglobalelements::trigger_pt_type_aec_hdr hdr_aec_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_aec_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct hdr_aec_dataStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// mod_hdr22_aec_data - Array
        /// Min Length:    1
        /// Max Length:    Unbounded
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32                  mod_hdr22_aec_dataCount;
        UINT32                  mod_hdr22_aec_dataID;
        mod_hdr22_aec_dataType* mod_hdr22_aec_data;
    } hdr_aec_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_hdr22_coreType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_hdr22_coreType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mod_hdr22_hdr_aec_data - Array
    /// Min Length:    1
    /// Max Length:    Unbounded
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32                      mod_hdr22_hdr_aec_dataCount;
    UINT32                      mod_hdr22_hdr_aec_dataID;
    mod_hdr22_hdr_aec_dataType* mod_hdr22_hdr_aec_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_hdr22_reserveType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_hdr22_reserveType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_recon_en
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Enable RECON block of HDR
    /// Default Value: 1
    /// Range:         [0,1]
    /// Bit Depth:     1u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 hdr_recon_en;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_mac_en
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Enable MAC block of HDR
    /// Default Value: 1
    /// Range:         [0,1]
    /// Bit Depth:     1u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 hdr_mac_en;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_msb_align
    ///
    /// Tuning Level:  never_tune
    /// Description:   MSB Align for HDR module
    /// Default Value: 0
    /// Range:         [0,1]
    /// Bit Depth:     1u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 hdr_msb_align;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_zrec_g_grad_dth_log2
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   This value represents threshold 2 for the green pixel gradient delta for directional interpolation.
    /// Default Value: 5
    /// Range:         [0,12]
    /// Bit Depth:     4u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 hdr_zrec_g_grad_dth_log2;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_zrec_rb_grad_dth_log2
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   This value represents threshold 2 for the red/blue pixel gradient delta for directional interpolation.
    /// Default Value: 5
    /// Range:         [0,12]
    /// Bit Depth:     4u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 hdr_zrec_rb_grad_dth_log2;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// recon_edge_lpf_tap0
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Tap0 value for low-pass filter applied before edge detection.
    /// Default Value: 3
    /// Range:         [0,5]
    /// Bit Depth:     3u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 recon_edge_lpf_tap0;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mac_motion_dilation
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Size of motion dilation max filter, 5 means -5 to 5, i.e. 11-tap filter.
    /// Default Value: 5
    /// Range:         [0,5]
    /// Bit Depth:     3u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 mac_motion_dilation;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mac_motion0_dt0
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   An additive term to noise estimate, to avoid dividing by zero.
    /// Default Value: 1
    /// Range:         [1,63]
    /// Bit Depth:     6u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 mac_motion0_dt0;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mac_low_light_dth_log2
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   log2(th2-th1) for low light switching.
    /// Default Value: 6
    /// Range:         [2,14]
    /// Bit Depth:     4u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 mac_low_light_dth_log2;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mac_smooth_enable
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Enable motion adaptive smoothing, an optional step in MAC.
    /// Default Value: 1
    /// Range:         [0,1]
    /// Bit Depth:     1u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 mac_smooth_enable;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mac_smooth_th1
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Th1 for motion adaptive smoothing.
    /// Default Value: 192
    /// Range:         [0,256]
    /// Bit Depth:     9u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 mac_smooth_th1;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mac_smooth_dth_log2
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   log2(th2-th1) for motion adaptive smoothing.
    /// Default Value: 6
    /// Range:         [2,8]
    /// Bit Depth:     4u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 mac_smooth_dth_log2;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mac_smooth_tap0
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   Tap0 value for the low-pass filter in motion adaptive smoothing.
    /// Default Value: 5
    /// Range:         [0, 5]
    /// Bit Depth:     3u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 mac_smooth_tap0;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_hdr22Type
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_hdr22Type
{
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Binary file symbol table entry ID
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 SymbolTableID;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// enable_section
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct enable_sectionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
        globalelements::enable_flag_type hdr_enable;
    } enable_section;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// module_version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct module_versionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
        INT32 major_revision;
        INT32 minor_revision;
        INT32 incr_revision;
    } module_version;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// control_variables
    ///
    /// Default Value: control_aec_exp_sensitivity_ratio, control_gain
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct control_variablesStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// control_var_type - Array
        /// Default Value: control_aec_exp_sensitivity_ratio, control_gain
        /// Length:        2
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        enum class control_var_typeEnum
        {
            control_exp_time_ratio            = 0,
            control_aec_exp_sensitivity_ratio = 1,
            control_lux_idx                   = 2,
            control_gain                      = 3
        } control_var_type[2];
    } control_variables;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// control_method
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct control_methodStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// aec_exp_control
        /// Default Value: control_gain
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ispglobalelements::tuning_control_aec_type     aec_exp_control;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// aec_hdr_control
        /// Default Value: control_aec_exp_sensitivity_ratio
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ispglobalelements::tuning_control_aec_hdr_type aec_hdr_control;
    } control_method;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// dynamic_enable_triggers
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct dynamic_enable_triggersStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// hdr_recon_en
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        struct hdr_recon_enStruct
        {
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// Binary file symbol table entry ID
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            UINT32 SymbolTableID;

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// enable
            ///
            /// Tuning Level:  rarely_tune
            /// Description:   enable HDR Recon
            /// Default Value: 0
            /// Range:         [0, 1]
            /// Bit Depth:     1u
            /// Notes:         none
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            globalelements::enable_flag_type        enable;

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// hyst_control_var
            ///
            /// Tuning Level:  rarely_tune
            /// Description:   enable HDR Recon
            /// Default Value: control_aec_exp_sensitivity_ratio
            /// Range:         [0, 1]
            /// Bit Depth:     1u
            /// Notes:         none
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            ispglobalelements::control_var_type        hyst_control_var;

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// hyst_mode
            /// Default Value: UPWARD
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            ispglobalelements::hyst_direction          hyst_mode;

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// hyst_trigger
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            ispglobalelements::trigger_pt_couplet_type hyst_trigger;
        } hdr_recon_en;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// hdr_mac_en
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        struct hdr_mac_enStruct
        {
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// Binary file symbol table entry ID
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            UINT32 SymbolTableID;

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// enable
            ///
            /// Tuning Level:  rarely_tune
            /// Description:   enable HDR Mac
            /// Default Value: 0
            /// Range:         [0, 1]
            /// Bit Depth:     1u
            /// Notes:         none
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            globalelements::enable_flag_type        enable;

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// hyst_control_var
            ///
            /// Tuning Level:  rarely_tune
            /// Description:   enable HDR Mac
            /// Default Value: control_aec_exp_sensitivity_ratio
            /// Range:         [0, 1]
            /// Bit Depth:     1u
            /// Notes:         none
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            ispglobalelements::control_var_type        hyst_control_var;

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// hyst_mode
            /// Default Value: UPWARD
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            ispglobalelements::hyst_direction          hyst_mode;

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// hyst_trigger
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            ispglobalelements::trigger_pt_couplet_type hyst_trigger;
        } hdr_mac_en;
    } dynamic_enable_triggers;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chromatix_hdr22_reserve
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_hdr22_reserveType chromatix_hdr22_reserve;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chromatix_hdr22_core
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_hdr22_coreType    chromatix_hdr22_core;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_hdr22TypeClass
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class chromatix_hdr22TypeClass : public ParameterModule, public chromatix_hdr22Type
{
public:
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const UINT16 MAJOR = 2;
    static const UINT16 MINOR = 2;
    static const UINT32 PATCH = 0;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Default Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_hdr22TypeClass(
        const CHAR* name);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_hdr22TypeClass(
        const CHAR* name,
        UINT32 modeId,
        UINT16 mode,
        UINT16 subMode,
        UINT32 group);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Destructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ~chromatix_hdr22TypeClass();

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// GetName
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const CHAR* GetName(
        const CHAR* type);


    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load hdr22_rgn_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadhdr22_rgn_dataType(
        ParameterFileSymbolTableEntry* entry,
        hdr22_rgn_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_hdr22_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_hdr22_aec_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_hdr22_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_hdr22_hdr_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_hdr22_hdr_aec_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_hdr22_hdr_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_hdr22_hdr_aec_dataType_hdr_aec_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_hdr22_hdr_aec_dataType_hdr_aec_dataStruct(
        ParameterFileSymbolTableEntry* entry,
        mod_hdr22_hdr_aec_dataType::hdr_aec_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_hdr22_coreType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_hdr22_coreType(
        ParameterFileSymbolTableEntry* entry,
        chromatix_hdr22_coreType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_hdr22_reserveType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_hdr22_reserveType(
        ParameterFileSymbolTableEntry* entry,
        chromatix_hdr22_reserveType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_hdr22Type
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_hdr22Type(
        ParameterFileSymbolTableEntry* entry,
        chromatix_hdr22Type* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load enable_sectionStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadenable_sectionStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_hdr22Type::enable_sectionStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load module_versionStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmodule_versionStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_hdr22Type::module_versionStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load control_variablesStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadcontrol_variablesStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_hdr22Type::control_variablesStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load control_methodStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadcontrol_methodStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_hdr22Type::control_methodStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load dynamic_enable_triggersStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loaddynamic_enable_triggersStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_hdr22Type::dynamic_enable_triggersStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load dynamic_enable_triggersStruct_hdr_recon_enStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loaddynamic_enable_triggersStruct_hdr_recon_enStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_hdr22Type::dynamic_enable_triggersStruct::hdr_recon_enStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load dynamic_enable_triggersStruct_hdr_mac_enStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loaddynamic_enable_triggersStruct_hdr_mac_enStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_hdr22Type::dynamic_enable_triggersStruct::hdr_mac_enStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_hdr22_hdr_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_hdr22_hdr_aec_dataType(
        mod_hdr22_hdr_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_hdr22_hdr_aec_dataType_hdr_aec_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_hdr22_hdr_aec_dataType_hdr_aec_dataStruct(
        mod_hdr22_hdr_aec_dataType::hdr_aec_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload chromatix_hdr22_coreType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadchromatix_hdr22_coreType(
        chromatix_hdr22_coreType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload chromatix_hdr22Type
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadchromatix_hdr22Type(
        chromatix_hdr22Type* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Parse symbol table entry, and return a new object
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ParameterModule* Parse(
        ParameterSetManager* manager,
        ParameterFileSymbolTableEntry* entry) const;

}; // End class chromatix_hdr22TypeClass

HDR_2_2_0_NAMESPACE_END
#endif // HDR_2_2_0_H

